/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
/**
 *
 * @author lOaD
 */
public class MM1 {

    public static boolean revisarcampos(JTextField campo) {
        if(campo.getText().isEmpty())
        {
            JOptionPane.showMessageDialog(null, "ha dejado el campo "+campo.getName()+" vacío", "Atención",JOptionPane.ERROR_MESSAGE);
            return false;
        }
        else
        {
            try{
                double val = Double.parseDouble(campo.getText());
                //System.out.println(val);
                return true;
            }
            catch(Exception e){
                //System.out.println(e);
                JOptionPane.showMessageDialog(null, "ha digitado caracteres en el campo "+campo.getName(), "Atención",JOptionPane.ERROR_MESSAGE);
                campo.setText("");
                
                return false;
            }
                    
            
            
        }
    }
    
    private float x,y,p,Ls,Lq,Ws,Wq,Pn, Pls, Pws, Pwq, Pw, GG1;
    public float[] matr;
    
    
    
    public float[] ModeloMm1(float mediallegada, float mediaservicio, double n, double t) {
        
        //mediallegada: es el numero esperado de llegadas por unidad de tiempo
        //mediaservicio: es el tiempo esperado de servicio por cliente.
        //Pn es la probabilidadde tener n clientes en el sistema
        //Pws probabilidad de que un cliente no espere en el sistema mas de t unidades de tiempo (horas)
        //Pwq probabilidad de que un cliente no espere en la cola mas de t unidades de tiempo (horas)
        matr = new float[9];
        x = mediallegada;
        y = mediaservicio;
        p = x/y;
        
        Ls = Math.abs(x/(x-y));
        Lq = (float) (Math.pow(x, 2)/(y*(y-x)));
        Ws = 1/(y-x);
        Wq = x/(y*(y-x));
        
        Pn = (float) ((1-p)*Math.pow(p, n));
        Pls = (float) Math.pow(p, n+1);
        Pws = (float) Math.exp(-y*(1-p)*t);
        Pwq =  (float) (p*Math.exp(-y*(1-p)*t));
        
          
            matr[1]=Ls;
            matr[2]=Lq;
            matr[3]=Ws;
            matr[4]=Wq;
            matr[5]=Pn;
            matr[6]=Pls;
            matr[7]=Pws;
            matr[8]=Pwq;
        
        
            return matr;
  
}

    
    
    
    public float[] ModeloMg1 (float mediallegada1, float mediaservicio1, float media, double n){
    
        //Pn es la probabilidadde tener n clientes en el sistema
        //La probabilidad de que un cliente tenga que esperar por el servicio
        
        matr = new float[7];
        
        x = mediallegada1;
        y = mediaservicio1;
        p = x/y;
        
        
        Lq = (float) (Math.pow(x, 2) * Math.pow(media, 2) + Math.pow(p, 2))/(2*(1-p));
        Ls = Lq + p;
        Wq = Lq/x;
        Ws= Wq + (1/y);
        
        Pn = (float) ((1-p)*Math.pow(p, n));
        Pw = p;
        
        matr[1]=Ls;
        matr[2]=Lq;
        matr[3]=Ws;
        matr[4]=Wq;
        matr[5]=Pn;
        matr[6]=Pw;
        
        
        
        return matr;
        
        
                
    }

   

    public float[] ModeloGg1(float mediallegada2, float mediaservicio2, float media, float media2)  {
    
        
        
        matr = new float[2];
        x = mediallegada2;
        y = mediaservicio2;
        p = x/y;
        
           
         GG1 = (float) ((((Math.pow(x,2)* Math.pow(media2,2)) + (Math.pow(y,2)*Math.pow(media,2)))/2) * (((Math.pow(x, 2) * Math.pow(media, 2)) + (Math.pow(p, 2)/(2*(1-p))))/x));
        
         
         matr[1]=GG1;
         
     return matr;
     
    }

    

 
 


    
    
    
}
